﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using WCFFacturacion.Datos;

namespace WCFFacturacion
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Service1" en el código y en el archivo de configuración a la vez.
    public class ServicioFacturacion : IServicioFacturacion
    {


        private bool TablaEstaVacia(DataSetFacturacion.ProductoDataTable mitabla)
        {
            return (mitabla.Rows.Count == 0);
        }


        private Producto ArmarProductoApartirDeUnregistro(DataSetFacturacion.ProductoRow miRegistro)
        {
            Producto productoADevolver = new Producto();
            productoADevolver.IdProducto = miRegistro.IDProducto;
            productoADevolver.Descripcion = miRegistro.Descripcion;
            productoADevolver.Precio = miRegistro.Precio;
            productoADevolver.Stock = miRegistro.Stock;
            productoADevolver.IdIva = miRegistro.IDIVA;
            productoADevolver.IdDepartamento = miRegistro.IDDepartamento;

            try
            {
                productoADevolver.Notas = miRegistro.Notas;
            }
            catch (Exception)
            {

                productoADevolver.Notas = "[Sin notas]";
            }
            return productoADevolver;
        }





        public Producto GetProductoConId(int idProducto)
        {

            DataSetFacturacion.ProductoDataTable mitabla = CADProducto.GetProductoConId(idProducto);

            //  Caso sin producto
            if (TablaEstaVacia(mitabla))
            {
                return null;
            }

            DataSetFacturacion.ProductoRow miRegistro = (DataSetFacturacion.ProductoRow)mitabla.Rows[0];
            Producto productoADevolver = ArmarProductoApartirDeUnregistro(miRegistro);

            return productoADevolver;
        }

       


        public List<Producto> GetTodosLosProductos()
        {
            List<Producto> productosADevolver = new List<Producto>();

            DataSetFacturacion.ProductoDataTable mitabla = CADProducto.GetTodosLosProductos();

            //  Caso sin producto - return empty list
            if (TablaEstaVacia(mitabla))
            {
                return productosADevolver;
            }

            foreach (DataSetFacturacion.ProductoRow miRegistro in mitabla.Rows)
            {
                Producto productoEnRegistro = ArmarProductoApartirDeUnregistro(miRegistro);
                productosADevolver.Add(productoEnRegistro);
            }

            return productosADevolver;
        }



    }
}
